#version 330 core

layout(location = 0) in vec3 position;
layout(location = 1) in vec3 normal;
layout(location = 2) in vec2 texCoord;

out vec3 FragPos;
out vec3 Normal;
out vec2 TexCoord;

uniform mat4 mvp_matrix;
uniform mat4 model_matrix;

void main()
{
    FragPos = vec3(model_matrix * vec4(position, 1.0));
    Normal = mat3(transpose(inverse(model_matrix))) * normal;
    TexCoord = texCoord;
    gl_Position = mvp_matrix * vec4(position, 1.0);
}